package main

import (
	"fmt"
	"os"
	"runtime"
)

func main() {
	//bill()
	//osArgs()
	//getCpu()
	sumTest(200)
}

//记账系统
func bill() {
	//声明一个变量,保存接收影虎输入的选项
	key := ""
	//声明一个变量,控制是否退出for
	loop := true
	//显示这个主菜单
	for {
		fmt.Println("-----------------家庭收支记账软件-------------------")
		fmt.Println("               1 收支明细")
		fmt.Println("               2 登记收入")
		fmt.Println("               3 登记支出")
		fmt.Println("               4 退出软件")
		fmt.Println("               请选择(1-4): ")
		fmt.Scanln(&key)
		fmt.Println("客户输入:" + key)
		switch key {
		case "1":
			fmt.Println("-----------收支明细----------")
		case "2":
			fmt.Println("-----------登记收入----------")
		case "3":
			fmt.Println("-----------登记支出----------")
		case "4":
			fmt.Println("-----------退出软件----------")
			loop = false
		default:
			fmt.Println("请输入正确的选项..")

		}
		if !loop {
			break
		}
	}
	fmt.Println("你退出家庭记账软件的使用...")
}

//获取系统参数
func osArgs() {
	fmt.Println("命令行参数有", len(os.Args))
	//遍历os.args切片,就可以得到所有的命令行输入参数值
	for i, v := range os.Args {
		fmt.Printf("args[%v]=%v\n", i, v)
	}
}

//获取CPU
func getCpu() {
	cpuNumber := runtime.NumCPU()
	fmt.Println("cpuNumber=", cpuNumber)
	//自己设置使用多少个CPU
	runtime.GOMAXPROCS(cpuNumber - 1)

}

//阶乘
var (
	myMap = make(map[int]int, 10)
)

//计算N!,结果放入到Map
func test(n int) {
	res := 1
	for i := 1; i < n; i++ {
		res *= i
	}
	myMap[n] = res
}
func sumTest(m int) {
	for i := 0; i < m; i++ {
		go test(i)
	}
	for i, v := range myMap {
		fmt.Println("i=", i, "V=", v)
	}
}
